home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu083.dms / pu083.adf / Morse Code / morse2.0 < prev    next >
Text File  |  1989-03-19  |  8KB  |  140 lines

  1. REM REV 1.0 PROGRAM FOR MORSE CODE GENERATION. AUG/86 KMW. PTL.
  2. '  REV 2.0 NUMBERS ADDED 1/87 Kathy Wehr WB3KRN (@ K3RLI for packet mail)
  3. ' Public Domain Notice: This is FREE ! Don't charge anyone for this 
  4. ' program. If you are a Amateur Radio Operator, send a note with your
  5. ' name, call, & address to Kathy Wehr, RD#1 Box 193, Watsontown, PA
  6. ' 17777 to get receive Amigan Beacon Newsletter, and get info on 
  7. ' AmigaNet, the Low Band Amigan Amateurs Net. If you have comments 
  8. ' or improvements to this program, send them to the above address.
  9. ' I especially welcome comments on how to get the code speed more
  10. ' accurate.
  11. CLEAR
  12. RANDOMIZE TIMER
  13. WIDTH 77
  14.  
  15. TOTAL=.0000001#:WRONG=.0000001#
  16. PRINT"           MORSE CODE GENERATOR.":PRINT :PRINT 
  17. CHANGE:
  18. INPUT"ENTER PITCH OF TONE.(800HZ DEFAULT)";P$
  19. IF P$="" THEN P$="800"
  20. P=VAL(P$)
  21. PRINT :INPUT"ENTER CODE SPEED. WORDS/MINUTE.";WPM$
  22. IF WPM$="" THEN WPM$="7"
  23. WPM=VAL(WPM$)
  24. DOT=(14.7/WPM) 'CALCULATE SPEED, DOT TIME
  25. 'PRINT:INPUT"ENTER WEIGHT (3.0 TO 1 DEFAULT).";W$
  26. 'IF W$="" THEN W$="3.0"
  27. W$="3.0"
  28. W=VAL(W$):DASH=DOT*W
  29. PRINT:INPUT"DO YOU WANT NUMBERS & PUNCTUATION ? (Y)/N ";NP$
  30. IF NP$="" THEN NP$="Y"
  31. IF NP$="n" THEN NP$="N"
  32. IF NP$="y" THEN NP$="Y"
  33.  
  34. CHOOSE:
  35. CLS
  36. PRINT"    ENTER:"
  37. PRINT"       C  TO CHANGE SPEED, PITCH, & PUNCTUATION."
  38. PRINT"       K  FOR KEYBOARD SENDING."
  39. PRINT"       Q  FOR RECEIVING QUIZ."
  40. PRINT"       R  FOR RANDOM RECEIVING PRACTICE."
  41. PRINT"       S  FOR RETURNING TO AMIGADOS."
  42. INPUT R$:R$=UCASE$(R$)
  43. IF R$="C" THEN GOTO CHANGE
  44. IF R$="Q" THEN PRINT :PRINT "PRESS ESCAPE KEY TO FOR MENU.":GOTO QUIZ
  45. IF R$="R" THEN PRINT:PRINT"PRESS ESCAPE KEY FOR MENU.":GOTO RAND
  46. IF R$="S" THEN SYSTEM
  47. IF R$="K" THEN PRINT :PRINT "START TYPING. PRESS ESCAPE FOR MENU.":GOTO GETAKEY
  48. GOTO CHOOSE
  49.  
  50. GETAKEY:
  51. C$=INKEY$
  52. IF C$="" THEN GOTO GETAKEY
  53. SOUND P,DASH,0 'WAIT ONE DOT LENGHT.
  54. PRINT C$;:C=ASC(C$):IF C=27 THEN GOTO CHOOSE
  55. GOSUB B
  56. GOTO GETAKEY
  57.  
  58. RAND:
  59. 'C IS THE RANDOM CHARACTER VARIABLE, C$ IS THE LETTER.
  60. IF NP$="Y" THEN C=((INT(RND*47))+44) ELSE C=((INT(RND*26))+65)
  61. I=I+1:PRINT CHR$(C);:IF I=5 THEN PRINT" ":I=0
  62. GOSUB B
  63. SOUND P,DASH,0 'WAIT ONE DOT LENGHT.
  64. IF I=0 THEN SOUND P,(DASH*2.4),0
  65. AN$=UCASE$(INKEY$)
  66. IF AN$="" THEN GOTO RAND ELSE AN=ASC(AN$):IF AN=27 THEN GOTO CHOOSE
  67. GOTO RAND
  68.  
  69. QUIZ:
  70. LOCATE 23,1:PRINT"SCORE = ";:PRINT USING "##.##";((100*((TOTAL-WRONG)/TOTAL)));
  71. IF NP$="Y" THEN C=((INT(RND*47))+44)  ELSE C=((INT(RND*26))+65) ', - Z (44 - 90)
  72. C$=CHR$(C)
  73. SEND:
  74. TOTAL=TOTAL+1
  75. GOSUB B
  76. ANSWER:
  77. AN$=UCASE$(INKEY$)
  78. IF AN$="" THEN GOTO ANSWER
  79. AN=ASC(AN$):IF AN=27 THEN GOTO CHOOSE
  80. POSITION=(1+(TOTAL-((TOTAL\80)*80)))
  81. LOCATE 12,POSITION:PRINT AN$;:IF POSITION=80 THEN LOCATE 12,1:PRINT 
  82. IF AN$<>C$ THEN WRONG=WRONG+1:GOTO SEND
  83. GOTO QUIZ
  84. STOP
  85.  
  86. B:
  87. IF C=44 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  88. IF C=45 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  89. IF C=46 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  90. IF C=47 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  91. IF C=48 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  92. IF C=49 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  93. IF C=50 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  94. IF C=51 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  95. IF C=52 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  96. IF C=53 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  97. IF C=54 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  98. IF C=55 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  99. IF C=56 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  100. IF C=57 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  101. IF C=58 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  102. IF C=59 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  103. IF C=60 THEN RETURN '60=<   
  104. IF C=61 THEN RETURN ' 61== 
  105. IF C=62 THEN RETURN ' 62=>
  106. IF C=63 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  107. IF C=64 THEN RETURN   ' 64=@
  108. IF C=65 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  109. IF C=66 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  110. IF C=67 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  111. IF C=68 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  112. IF C=69 THEN SOUND P,DOT,255:RETURN
  113. IF C=70 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  114. IF C=71 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  115. '72=H
  116. IF C=72 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  117. IF C=73 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  118. IF C=74 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  119. IF C=75 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  120. IF C=76 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  121. IF C=77 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  122. IF C=78 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  123. IF C=79 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  124. IF C=80 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  125. IF C=81 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  126. IF C=82 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  127. IF C=83 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  128. IF C=84 THEN SOUND P,DASH,255:RETURN
  129. IF C=85 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  130. IF C=86 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  131. IF C=87 THEN SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  132. IF C=88 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  133. IF C=89 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:RETURN
  134. IF C=90 THEN SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DASH,255:SOUND P,DOT,0:SOUND P,DOT,255:SOUND P,DOT,0:SOUND P,DOT,255:RETURN
  135.  
  136. RETURN
  137. GOTO CHOOSE
  138. STOP
  139. END
  140.